home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / lib / X11 / willow / doc / Z39.50_Supplement < prev   
Encoding:
Text File  |  1995-07-12  |  35.8 KB  |  808 lines

  1.  
  2.                                                   September 2, 1994
  3.  
  4.     Using Willow with the Z39.50 Information Retrieval Protocol
  5.  
  6.      ##########################################################
  7.      #           Send your questions and comments to:         #
  8.      #                willow@cac.washington.edu               #
  9.      # Or, if you wish to share them with other Willow users: #
  10.      #             willow-info@cac.washington.edu             #
  11.      ##########################################################
  12.  
  13.  
  14. Contents
  15. ========
  16.   Section 0: Introduction
  17.   Section 1: Searching with Z39.50              
  18.   Section 2: Configuring a Z39.50 Database 
  19.   Section 3: Specifying Z39.50 Attributes                   
  20.   Section 4: MARC Record Formatting
  21.   Section 5: Creating a Z39.50 Database
  22.  
  23. Section 0: Introduction
  24. =======================
  25.   This document provides information on how to configure and use
  26.   Willow's Z39.50 driver. It is geared towards readers who are already
  27.   fairly knowledgable about the Z39.50 information retrieval protocol.
  28.   "Creating a Z39.50 Database" gives some pointers for finding a
  29.   Willow/Z39.50 compatible server for your own data.
  30.  
  31. Section 1: Searching with Z39.50              
  32. ================================
  33.   Although the mechanics of the Willow interface remain the same
  34.   regardless of the driver used, there are differences in search
  35.   strategy that your users need to keep in mind.  This section
  36.   outlines some of the more important search strategy considerations
  37.   for databases which use the Z39.50 driver.
  38.  
  39.   Operators
  40.     AND, OR, and AND-NOT are supported.  If more than one field box
  41.     contains search terms, the field boxes are connected by AND.
  42.     Operators may not appear as the first element in any field box.
  43.     Parentheses are not yet supported, nor are proximity operators.
  44.     
  45.     The assumed operator between words is usually AND (for the
  46.     structure attribute WORD_LIST).  Some indexes, like TITLE_WP, are
  47.     phrases by default (structure attribute PHRASE).  The completeness
  48.     attribute affects whether the phrase has to be the complete
  49.     subfield, complete field, or incomplete subfield.  You can
  50.     override structure, completeness, and position attributes on a
  51.     per-field basis in the database configuration file, but your user
  52.     cannot do so on a per-search basis.
  53.     
  54.     Regardless of your database configuration settings, the target's
  55.     indexing practices will determine much of your search strategy.
  56.     For example, OCLC WorldCat indexes subject headings as phrases at
  57.     the complete subfield level.  If you try to search "united states
  58.     history" as a subject phrase (looking for documents with the
  59.     subject heading "United States -- History"), you will fail since
  60.     the indexing is
  61.         history
  62.         united states
  63.  
  64.     Similarly, "united states history" fails as a phrase search in
  65.     WorldCat; there is no index for that database that spans subject
  66.     subfields.  Your only alternatives are to search "united states
  67.     history" as a wordlist (which assumes AND between words), or to
  68.     connect the subfield phrases with AND:
  69.        united states AND history
  70.       
  71.   Relational Operators
  72.     Many numeric fields support relational operators, listed below:
  73.                 =          equal to
  74.                 <          less than
  75.                 <=         less than or equal to
  76.                 >          greater than
  77.                 >=         greater than or equal to
  78.                 ~=         not equal to
  79.                 ^=         not equal to
  80.     
  81.   Punctuation
  82.     The search term itself must be a simple string without any special
  83.     characters (like "=()<>", tabs or blanks).  If you want to include
  84.     these characters just put quotes marks around the search term.  If
  85.     you want a quote mark within a term surrounded by quote marks you
  86.     must double the quote mark within the quotes.  For example either
  87.     query below
  88.     
  89.              'hogan''s hero''s'
  90.         or
  91.              "hogan's hero's"
  92.     
  93.     would search for the string "hogan's hero's".  A quote mark may be
  94.     either a single quote (') or a double quote (").
  95.     
  96.     With some targets, punctuation (or the lack of it) is significant.
  97.     Among the more common practices are:
  98.     
  99.     1) requiring a comma between the surname and forename in an author
  100.        search to indicate inverted order ("smith, john")
  101.     
  102.     2) requiring that a comma not appear between the surname and
  103.        forename in an author search ("smith john")
  104.     
  105.     3) assuming the absence of a comma in an author search indicates
  106.        direct order ("john smith")
  107.     
  108.     4) requiring double dashes between subheadings in a subject phrase
  109.        search (united states -- history)
  110.     
  111.     5) requiring that double dashes not appear between subheadings in
  112.        a subject phrase search (united states history)
  113.     
  114.   Truncation
  115.     Use '#' or '?' to indicate right truncation. For example, "rat#"
  116.     will match "rat", "rate", "ratio", etc.  If you submit a truncated
  117.     search term and the server does not support truncation, you should
  118.     get an error message.
  119.       
  120.     A few servers truncate by default, so a search for "wash" also
  121.     retrieves "washington".  In these cases, you can use '|' to
  122.     indicate no truncation.  For example, "wash|" will retrieve "wash"
  123.     only, even if the server truncates by default.
  124.     
  125.     You cannot override the target's default truncation setting in the
  126.     database configuration file.
  127.     
  128.   Completeness
  129.     Like truncation, the completeness attribute defines how your
  130.     search terms are mapped at the target.  In RLIN's "Avery Index to
  131.     Architectural Periodicals", an author phrase search for "clark,
  132.     sally" retrieves documents by "Clark, F. R. S.".  RLIN's default
  133.     behavior is to map the forename in an author search to the
  134.     initials and to the spelled-out form.  To get an exact personal
  135.     name search, you must set the completeness attribute to CFLD
  136.     (value = 3).  Completeness is a database configuration per-field
  137.     setting and cannot be changed on a per-search basis.  Willow
  138.     normally accepts the target's default.
  139.  
  140.  
  141. Section 2: Configuring a Z39.50 Database 
  142. ========================================
  143.   This section provides supplemental information to the "Database
  144.   Configuration File" section of "Customization" for configuring
  145.   Z39.50 databases.  When using the Z39.50 driver, the following
  146.   differences from that section apply.
  147.  
  148.   HostName      
  149.     A fully qualified domain name for the Z39.50 server host must
  150.     be supplied with a "HostName" environment specifier. I.e.
  151.       env_name = HostName
  152.       env_val  = fionavar.mit.edu
  153.  
  154.   Authenticated Databases  
  155.     Z39.50 databases which require user-authentication can be handled
  156.     two different ways. They can be configured using the standard
  157.     Willow method where the user enters and id and/or password (see
  158.     the "Manual Login Databases" section of "Customization"), or you
  159.     can hard-code the authentication information into the db.conf
  160.     file, so the user does not have to type it.
  161.  
  162.     To use the latter method, use an "auth_id" environment specifier.
  163.     I.e. 
  164.         env_name = auth_id
  165.         env_val  = uname/password
  166.  
  167.     The value is a user name and a password separated by a slash, with
  168.     no whitespace.
  169.  
  170.   Z39.50Port
  171.     If the Z39.50 service is not on the standard port (210) you can
  172.     specify it:
  173.         env_name = Z39.50Port
  174.         env_val  = 210
  175.       
  176.   t_field_cmd = 
  177.     Same as with other databases but additional functionality. In
  178.     addition to simple index names like "TITLE" you can specify other
  179.     Z39.50 attributes. See the "Specifying Z39.50 Attributes"
  180.     section below.
  181.     
  182.   l_field_cmd = LANGUAGE = ENGLISH
  183.     Is also a string that gets sent to the driver. It is a way of
  184.     abbreviating a search. Just insert the search that would normally
  185.     get submitted as a string here.
  186.  
  187.   list_name 
  188.     Specifies a browsable index using the browse translation
  189.     functionality, which maps the Willow list-browsing protocol to the
  190.     Z39.50 SCAN protocol (note that many servers do not support the
  191.     SCAN protocol yet, and thus cannot support browsing).  However,
  192.     the translation feature has not yet been perfected, and browsing
  193.     may be slow or even unsuccessful.  To enable browsing for a
  194.     particular index, add a corresponding list_name line after a
  195.     t_field_cmd entry, specifying the Z39.50 use attribute (see below,
  196.     "Specifying Z39.50 Attributes") For example, to browse the list of
  197.     full titles,
  198.         t_field_name = Exact Titles
  199.         t_field_cmd = TITLE_WP  
  200.         list_name = TITLE_WP
  201.  
  202.     The translation may have problems with certain servers which use a
  203.     collating sequence other than ASCII.  The driver can support a
  204.     psuedo-EBCDIC sequence for a browse list; this feature can be
  205.     activated by appending :EBCDIC to the index name, e.g. list_name =
  206.     TITLE:EBCDIC.  ASCII is the default; specifying :ASCII explicitly
  207.     is also allowed.
  208.  
  209.   SUTR Syntax
  210.     To enable the use of SUTR (Simple Unstructured Text Record)
  211.     records, include the following in the database entry. 
  212.         env_name = preferred syntax
  213.         env_val = SUTR
  214.  
  215.     With SUTR records, the fields to display for the summary record
  216.     are selected using the summary_fields field in a database entry.
  217.     For example,
  218.         summary_fields = TITLE,"AUTHOR:"
  219.  
  220.     will match any line beginning with TITLE or AUTHOR for summary display. 
  221.  
  222.     Each field with an 'E' flag indicates that the summary display
  223.     should end if this field is matched.  If none of these fields are
  224.     matched, the Summary_Field_Count tag will be used to determine how
  225.     many fields will be used for the summary.  It must be the last
  226.     tag. I.e.
  227.         summary_fields = Land boundaries:E,Coastline:E,Summary_Field_Count:8
  228.  
  229.   summary_fields, title_fields
  230.     Willow requires title_fields and summary_fields to exist for each
  231.     database, but for non-SUTR databases (i.e. MARC databases) their
  232.     values are ignored by the Z39.50 driver so they can be left blank:
  233.         title_fields     = 
  234.         summary_fields   = 
  235.  
  236.     The contents of the title field displays are currently hard coded.
  237.     For MARC databases the contents of the summary and full records
  238.     are controlled by two files -- bibbrief for summaries, and bibfull
  239.     for the full records. They are described more fully below, in 
  240.     "MARC Record Formatting".
  241.  
  242.     There is one bibbrief and bibfull file that comes stock with the
  243.     z3950 driver (located in the willow/drivers/z3950.format
  244.     directory). But you can specify a different file to look for with
  245.     bib_suffix. For example:
  246.         env_name = bib_suffix
  247.         env_val  = mitcat
  248.  
  249.     Would cause your database to look for bibbrief.mitcat and
  250.     bibfull.mitcat before the standard bibbrief and bibfull files.  If
  251.     one or both files are not found, Willow silently defaults.  If one
  252.     or both are found, their contents OVERRIDES the default.  So you
  253.     should clone bibfull and bibbrief, make changes to the clone and
  254.     install it as your custom file with the custom bib_suffix.
  255.  
  256.   extension_fields
  257.     The z3950 driver supports the multi-media extension mechanism.
  258.     The extension_label and extension_program operate in exactly the
  259.     same way as other drivers.  However, the extension_fields string
  260.     is VERY DIFFERENT.  It contains a mini bibfull file entry.
  261.     Instead of whitespace, you use a comma.  (You also must terminate
  262.     the string with a comma.  Perhaps a subsequent version will contain
  263.     a smarter parser.)  Here is an example of a Z39.50 extension entry:
  264.         extension_fields = PATH:@,|,|,690,|,~,PAGE:@,|,|,505,|,~,
  265.         extension_label   = Article View
  266.         extension_program = launcher
  267.  
  268.     When you press the button labeled "Article View" the 'launcher'
  269.     program is started and receives a full record with the MARC 690
  270.     field prefixed by "PATH: ", and the MARC 505 field prefixed by
  271.     "PAGE: ".  "MARC Record Formatting" below gives more information
  272.     about setting up the MARC formatting description.  The
  273.     "Multi-Media Extensions" section of "Customization" gives more
  274.     information on using the extension mechanism.
  275.  
  276.  
  277. Section 3: Specifying Z39.50 Attributes                   
  278. =======================================
  279.   Z39.50 attribute-spec
  280.     The jargon term we use for the complex specification of attributes
  281.     that can be placed in db.conf for a z39.50 t_field_cmd is
  282.     "attribute-spec". The attribute-spec specifies the search index
  283.     (also known as the USE Attribute), and optionally can also set
  284.     Structure, Completeness, and Positional attribute parameters.
  285.   
  286.        <attribute-spec> ::=  <use>
  287.             | <use>'/'<struct>
  288.               | <use>'/'<struct>'/'<compl>
  289.             | <use>'/'<struct>'/'<compl>'/'<pos>
  290.  
  291.     Where <use> is any name that matches the indexes defined for the
  292.     database. 
  293.  
  294.     The  <struct> parameter names one of the valid structure attribute
  295.     such as: 
  296.            <null>
  297.            PHRASE
  298.            WORD
  299.            KEY
  300.            YEAR
  301.            DATE
  302.            WORD_LIST
  303.            WORD_ADJ
  304.  
  305.     The <compl> parameter names one of the completeness attributes:
  306.            <null>
  307.            ISUB         Incomplete Subfield
  308.            CSUB         Complete Subfield
  309.            CFLD         Complete Field
  310.  
  311.     The <pos> parameter names  one of the positional attributes:
  312.            <null>
  313.            FF           First in Field
  314.            FS           First in subfield
  315.            ANY          any position in the field
  316.  
  317.     The database will associate defaults with USE Attributes so that
  318.     an attribute spec will be fully specified without requiring the
  319.     user to do so by hand.
  320.  
  321.     The <null> parameter means to put nothing between the slashes that
  322.     delimit the parameter, and use the default.
  323.  
  324.     Example 1:
  325.         t_field_cmd = SUBJECT/PHRASE/CSUB/ANY
  326.  
  327.     for a subject search that groups subfields as phrases, but will
  328.     match the subfield phrase if it occurs anywhere in the field.
  329.  
  330.     Example 2:
  331.       If the database had defined a default TITLE index as:
  332.       use         structure       completeness    position
  333.       TITLE       WORD_LIST       CFLD            ANY
  334.  
  335.     The following attribute-spec expressions are equivalent:
  336.     TITLE
  337.     TITLE/WORD_LIST
  338.     TITLE/WORD_LIST/CFLD
  339.     TITLE/WORD_LIST/CFLD/ANY
  340.     TITLE//CFLD
  341.     TITLE//CFLD/ANY
  342.     TITLE///ANY
  343.  
  344.     The reason why so much redundancy is allowed, is to make it easy
  345.     for a user to specify an attribute spec.
  346.  
  347.     NO whitespace should appear anywhere in an attribute spec.  This
  348.     is because the parser considers the attribute spec to be one
  349.     token, and cuts it apart at the slashes.
  350.   
  351.     All of these parameterizations are controlled through arrays in
  352.     src/z3950/api/client/bib1.h.  So if you hear of a new kind of
  353.     attribute, you can add it there.  
  354.  
  355.   More Detailed Information on Z39.50 Attributes:
  356.     The  <struct> parameter names one of the valid structure attributes:
  357.           ATTRIBUTE            VALUE 
  358.            <null>                 0             
  359.            PHRASE                 1
  360.            WORD                   2
  361.            KEY                    3
  362.            YEAR                   4
  363.            DATE                   5
  364.            WORD_LIST              6
  365.            WORD_ADJ               7
  366.            DATE_UNNORM          100
  367.            NAME                 101
  368.            NAME_UNNORM          102
  369.  
  370.  
  371.     The <compl> parameter names one of the completeness attributes:
  372.  
  373.           ATTRIBUTE            VALUE        MEANING
  374.            <null>                 0       Use target default
  375.            ISUB                   1       Incomplete Subfield
  376.            CSUB                   2       Complete Subfield
  377.            CFLD                   3       Complete Field
  378.  
  379.     The <pos> parameter names  one of the positional attributes:
  380.  
  381.           ATTRIBUTE            VALUE        MEANING
  382.            <null>                 0       Use target default
  383.            FF                     1       First in field
  384.            FS                     2       First in subfield
  385.            ANY                    3       Any position
  386.  
  387.      The <use> parameter names one of the search indexes with its default
  388.      attribute specs.  ATTRIBUTES shows the defaults associated with each 
  389.      index for <struct>/<compl>/<pos>.  
  390.  
  391.           INDEX                VALUE        ATTRIBUTES
  392.          PERS_NAME                1       WORD_LIST/ISUB/ANY
  393.          AUTHOR_PN                1       WORD_LIST/ISUB/ANY
  394.          PERS_NAME_WP             1       PHRASE/ISUB/ANY
  395.          PAP                      1       PHRASE/ISUB/ANY
  396.          CORPORATION              2       WORD_LIST/ISUB/ANY
  397.          ORGANIZATION             2       WORD_LIST/ISUB/ANY
  398.          CAP                      2       PHRASE/ISUB/ANY
  399.          CORPORATION_WP           2       PHRASE/ISUB/ANY
  400.          CONFERENCE               3       WORD_LIST/ISUB/ANY
  401.          CONFERENCE_WP            3       PHRASE/ISUB/ANY
  402.          TITLE                    4       WORD_LIST/ISUB/ANY
  403.          TITLE_WP                 4       PHRASE/ISUB/ANY
  404.          TWP                      4       PHRASE/ISUB/ANY
  405.          SERIES                   5       WORD_LIST/ISUB/ANY
  406.          SERIES_WP                5       PHRASE/ISUB/ANY
  407.          UNFRM_TITLE              6       WORD_LIST/ISUB/ANY
  408.          UNFRM_TITLE_WP           6       PHRASE/ISUB/ANY
  409.          ISBN                     7       WORD/ISUB/FS
  410.          ISSN                     8       WORD/ISUB/FS
  411.          LCCN                     9       WORD/ISUB/FS
  412.          BNBN                    10       WORD/ISUB/FS
  413.          BGFN                    11       WORD/ISUB/FS
  414.          LOCAL_NUM               12       WORD/ISUB/FS
  415.          DEWEY_NUM               13       WORD/ISUB/FS
  416.          UDC_NUM                 14       WORD/ISUB/FS
  417.          BLISS_NUM               15       WORD/ISUB/FS
  418.          LC_CALL                 16       WORD/ISUB/FS
  419.          NLM_CALL                17       WORD/ISUB/FS
  420.          NAL_CALL                18       WORD/ISUB/FS
  421.          MOS_CALL                19       WORD/ISUB/FS
  422.          LOCAL_CALL              20       WORD/ISUB/FS
  423.          SUBJECT                 21       WORD_LIST/ISUB/ANY
  424.          SUBJECT_WP              21       PHRASE/ISUB/ANY
  425.          SP                      21       PHRASE/ISUB/ANY
  426.          RAMEAU_SUBJ             22       WORD_LIST/ISUB/ANY
  427.          RAMEAU_SUBJ_WP          22       PHRASE/ISUB/ANY
  428.          BDI_SUBJ                23       WORD_LIST/ISUB/ANY
  429.          BDI_SUBJ_WP             23       PHRASE/ISUB/ANY
  430.          INSPEC_SUBJ             24       WORD_LIST/ISUB/ANY
  431.          INSPEC_SUBJ_WP          24       PHRASE/ISUB/ANY
  432.          MESH_SUBJ               25       WORD_LIST/ISUB/ANY
  433.          MESH_SUBJ_WP            25       PHRASE/ISUB/ANY
  434.          PA_SUBJ                 26       WORD_LIST/ISUB/ANY
  435.          PA_SUBJ_WP              26       PHRASE/ISUB/ANY
  436.          LC_SUBJ                 27       WORD_LIST/ISUB/ANY
  437.          LC_SUBJ_WP              27       PHRASE/ISUB/ANY
  438.          RVM_SUBJ                28       WORD_LIST/ISUB/ANY
  439.          RVM_SUBJ_WP             28       PHRASE/ISUB/ANY
  440.          LOCAL_SUBJ              29       WORD_LIST/ISUB/ANY
  441.          LOCAL_SUBJ_WP           29       PHRASE/ISUB/ANY
  442.          DATE                    30       WORD_LIST/ISUB/ANY
  443.          PUBDATE                 31       WORD_LIST/ISUB/ANY
  444.          ACQ_DATE                32       WORD_LIST/ISUB/ANY
  445.          KEY_TITLE               33       WORD_LIST/ISUB/ANY
  446.          KEY_TITLE_WP            33       PHRASE/ISUB/ANY
  447.          COLL_TITLE              34       WORD_LIST/ISUB/ANY
  448.          COLL_TITLE_WP           34       PHRASE/ISUB/ANY
  449.          PLL_TITLE               35       WORD_LIST/ISUB/ANY
  450.          PLL_TITLE_WP            35       PHRASE/ISUB/ANY
  451.          COVER_TITLE             36       WORD_LIST/ISUB/ANY
  452.          COVER_TITLE_WP          36       PHRASE/ISUB/ANY
  453.          TITLEPAGE               37       WORD_LIST/ISUB/ANY
  454.          TITLEPAGE_WP            37       PHRASE/ISUB/ANY
  455.          CAPT_TITLE              38       WORD_LIST/ISUB/ANY
  456.          CAPT_TITLE_WP           38       PHRASE/ISUB/ANY
  457.          RUN_TITLE               39       WORD_LIST/ISUB/ANY
  458.          RUN_TITLE_WP            39       PHRASE/ISUB/ANY
  459.          SPINE_TITLE             40       WORD_LIST/ISUB/ANY
  460.          SPINE_TITLE_WP          40       PHRASE/ISUB/ANY
  461.          OVAR_TITLE              41       WORD_LIST/ISUB/ANY
  462.          OVAR_TITLE_WP           41       PHRASE/ISUB/ANY
  463.          FORMER_TITLE            42       WORD_LIST/ISUB/ANY
  464.          FORMER_TITLE_WP         42       PHRASE/ISUB/ANY
  465.          ABBR_TITLE              43       WORD_LIST/ISUB/ANY
  466.          ABBR_TITLE_WP           43       PHRASE/ISUB/ANY
  467.          EXPN_TITLE              44       WORD_LIST/ISUB/ANY
  468.          EXPN_TITLE_WP           44       PHRASE/ISUB/ANY
  469.          PRECIS_SUBJ             45       WORD_LIST/ISUB/ANY
  470.          PRECIS_SUBJ_WP          45       PHRASE/ISUB/ANY
  471.          RSWK_SUBJ               46       WORD_LIST/ISUB/ANY
  472.          RSWK_SUBJ_WP            46       PHRASE/ISUB/ANY
  473.          SUBDIV_SUBJ             47       WORD_LIST/ISUB/ANY
  474.          SUBDIV_SUBJ_WP          47       PHRASE/ISUB/ANY
  475.          NATBIB_NUM              48       WORD_LIST/ISUB/ANY
  476.          NATBIB_NUM_WP           48       PHRASE/ISUB/ANY
  477.          LGLDEP_NUM              49       WORD_LIST/ISUB/ANY
  478.          LGLDEP_NUM_WP           49       PHRASE/ISUB/ANY
  479.          GOVTPUB_NUM             50       WORD_LIST/ISUB/ANY
  480.          GOVTPUB_NUM_WP          50       PHRASE/ISUB/ANY
  481.          MUSIC_PUB               51       WORD_LIST/ISUB/ANY
  482.          MUSIC_PUB_WP            51       PHRASE/ISUB/ANY
  483.          DB_NUM                  52       WORD_LIST/ISUB/ANY
  484.          DB_NUM_WP               52       PHRASE/ISUB/ANY
  485.          LOCAL_ID                53       WORD_LIST/ISUB/ANY
  486.          LOCAL_ID_WP             53       PHRASE/ISUB/ANY
  487.          LANGUAGE                54       WORD_LIST/ISUB/ANY
  488.          GEO_CODE                55       WORD_LIST/ISUB/ANY
  489.          INST_CODE               56       WORD_LIST/ISUB/ANY
  490.          NAME_TITLE              57       WORD_LIST/ISUB/ANY
  491.          NAME_TITLE_WP           57       PHRASE/ISUB/ANY
  492.          GEO_NAME                58       WORD_LIST/ISUB/ANY
  493.          GEO_NAME_WP             58       PHRASE/ISUB/ANY
  494.          PUB_PLACE               59       WORD_LIST/ISUB/ANY
  495.          CODEN                   60       WORD/ISUB/FS
  496.          MFORM_GEN               61       WORD_LIST/ISUB/ANY
  497.          ABSTRACT                62       WORD_LIST/ISUB/ANY
  498.          ABSTRACT_WP             62       PHRASE/ISUB/ANY
  499.          NOTE                    63       WORD_LIST/ISUB/ANY
  500.          NOTE                    63       PHRASE/ISUB/ANY
  501.          PUB_TYPE_EXACT         500       PHRASE/ISUB/ANY
  502.          AUTHOR_TITLE          1000       WORD_LIST/ISUB/ANY
  503.          AUTHOR_TITLE_WP       1000       PHRASE/ISUB/ANY
  504.          RECTYPE               1001       WORD_LIST/ISUB/ANY
  505.          RECTYPE_WP            1001       PHRASE/ISUB/ANY
  506.          NAME                  1002       WORD_LIST/ISUB/ANY
  507.          NAME_WP               1002       PHRASE/ISUB/ANY
  508.          AUTHOR                1003       WORD_LIST/ISUB/ANY
  509.          AUTHOR_WP             1003       PHRASE/ISUB/ANY
  510.          PERS_AUTHOR           1004       WORD_LIST/ISUB/ANY
  511.          PERS_AUTHOR_WP        1004       PHRASE/ISUB/ANY
  512.          CORP_AUTHOR           1005       WORD_LIST/ISUB/ANY
  513.          CORP_AUTHOR_WP        1005       PHRASE/ISUB/ANY
  514.          CONF_AUTHOR           1006       WORD_LIST/ISUB/ANY
  515.          CONF_AUTHOR_WP        1006       PHRASE/ISUB/ANY
  516.          STANDARD_ID           1007       WORD_LIST/ISUB/ANY
  517.          STANDARD_ID_WP        1007       PHRASE/ISUB/ANY
  518.          LC_CHILD_SUBJ         1008       WORD_LIST/ISUB/ANY
  519.          LC_CHILD_SUBJ_WP      1008       PHRASE/ISUB/ANY
  520.          PERSNAME_SUBJ         1009       WORD_LIST/ISUB/ANY
  521.          PERSNAME_SUBJ_WP      1009       PHRASE/ISUB/ANY
  522.          TEXT_BODY             1010       WORD_LIST/ISUB/ANY
  523.          TEXT_BODY_WP          1010       PHRASE/ISUB/ANY
  524.          DB_ADD_TIME           1011       WORD_LIST/ISUB/ANY
  525.          DB_ADD_TIME_WP        1011       PHRASE/ISUB/ANY
  526.          DB_MOD_TIME           1012       WORD_LIST/ISUB/ANY
  527.          DB_MOD_TIME_WP        1012       PHRASE/ISUB/ANY
  528.          ATY_FMT_ID            1013       WORD_LIST/ISUB/ANY
  529.          CONCEPT-TEXT          1014       WORD_LIST/ISUB/ANY
  530.          CONCEPT-REF_WP        1014       PHRASE/ISUB/ANY
  531.          DEFAULT               1016       WORD_LIST/ISUB/ANY
  532.          DEFAULT_WP            1016       PHRASE/ISUB/ANY
  533.          ANY                   1017       WORD_LIST/ISUB/ANY
  534.          ANY_WP                1017       PHRASE/ISUB/ANY
  535.          SERVER-CHOICE         1017       WORD_LIST/ISUB/ANY
  536.          SERVER-CHOICE_WP      1017       PHRASE/ISUB/ANY
  537.          PUBLISHER             1018       WORD_LIST/ISUB/ANY
  538.          RECORD-SOURCE         1019       WORD_LIST/ISUB/ANY
  539.          EDITOR                1020       WORD_LIST/ISUB/ANY
  540.          BIB-LEVEL             1021       WORD_LIST/ISUB/ANY
  541.          GEO-CLASS             1022       WORD_LIST/ISUB/ANY
  542.          INDEXED-BY            1023       WORD_LIST/ISUB/ANY
  543.          MAP-SCALE             1024       WORD_LIST/ISUB/ANY
  544.          MUSIC-KEY             1025       WORD_LIST/ISUB/ANY
  545.          REL-PERIODICAL        1026       WORD_LIST/ISUB/ANY
  546.          REPORT-NUMBER         1027       WORD_LIST/ISUB/ANY
  547.          STOCK-NUMBER          1028       WORD_LIST/ISUB/ANY
  548.          THEMATIC-NUMBER       1030       WORD_LIST/ISUB/ANY
  549.          MATERIAL-TYPE         1031       WORD_LIST/ISUB/ANY
  550.          DOC-ID                1032       WORD_LIST/ISUB/ANY
  551.          HOST_ITEM             1033       PHRASE/ISUB/ANY
  552.          CONTENT-TYPE          1034       WORD_LIST/ISUB/ANY
  553.  
  554.   
  555. Section 4: MARC Record Formatting
  556. =================================
  557.   The contents of the summary and full records are decoded from the
  558.   MARC format received from the Z39.50 server.  How the user sees
  559.   them is controlled by two files 'bibbrief' for summaries, and
  560.   'bibfull' for the full records.
  561.  
  562.   These two files get stored as bibbrief, and bibfull in the
  563.   willow/drivers/z3950.format directory. You can have your own in your
  564.   home directory as .bibfull and/or .bibbrief. As discussed in
  565.   "Configuring a Z39.50 Database" it is also possible to specify
  566.   alternate bibfull and bibbrief files for specific databases.
  567.  
  568.   Conventions: Comment lines are delimited by beginning and ending
  569.   with a slash. If you want to put a space in your output, denote it
  570.   with the at-sign -- '@'. The vertical bar '|' denotes "default"
  571.   and is used to match anything. The tilde '~' means "not" and is
  572.   used to match all but those named.
  573.  
  574.   The files consist of a set of tab-separated fields.  
  575.     short:              The short name string to be displayed.
  576.     ind1:               MARC first indicator.
  577.     ind2:               MARC second indicator.
  578.     tag:                MARC tag.
  579.     subfields:  MARC subfields present.
  580.  
  581.   Control is exercised as follows, if the tag, indicators and
  582.   subfields in the record match the contents of a line, the short
  583.   name entry will be prepended and the data from the record will be
  584.   displayed.  In bibbrief, the summary field tells how wide to make
  585.   the field in the title display.
  586.  
  587.   Bibbrief Format Examples
  588.     /short        ind1    ind2    tag     subfields    summary /
  589.     AU:@  |       |       100     |               20
  590.     Twenty characters out of the author appear in the title line
  591.     display. All subfields are displayed.
  592.  
  593.     SU:@  |       |       600     ~w              ~
  594.     Subject does not appear in the title line display. All subfields
  595.     except w are displayed.
  596.  
  597.   Bibfull Format Examples
  598.     /short        ind1    ind2    tag     subfields       summary /
  599.     AU:@  |       |       100     ~w              ~
  600.   
  601.   Special Rules
  602.     Following are the special rules that are currently available.
  603.   
  604.     R1: Used to extract holdings data from the MIT catalog.
  605.         Parameters
  606.         0       "R1"
  607.   
  608.     R2: Special labels for MeSH subject headings.
  609.         Parameters
  610.         0       "R2"
  611.     
  612.     R3-R7: These varargs rules use '!' to separate the arguments.  Each 
  613.            rule must be terminated with a '!'.
  614.   
  615.     R3: Substitutes a text string for the label defined in the bib file.  
  616.         Parameters
  617.         0       "R3"
  618.         1       (decimal) field tag
  619.         2       string for first occurrence of MARC field 
  620.                   (if null, use bibfile label)
  621.         3       string for second occurrence of MARC field
  622.         .       .
  623.         :       :
  624.         n       string for n-1th occurrence of MARC field
  625.   
  626.         Example:  AUTHOR:@  |  |  R3!700!!OTHER@AUTHORS:@!  |   ~   
  627.           will display
  628.             700 1  |a Mahin, John Lee, |d 1907-
  629.             700 10 |a Arthur, Robert.
  630.             700 10 |a Wayne, John, |d 1907-1979.
  631.             700 10 |a Ross, Katherine.
  632.          as:
  633.             AUTHOR: Mahin, John Lee, 1907-
  634.      OTHER AUTHORS: Arthur, Robert.
  635.                     Wayne, John, 1907-1979.
  636.                     Ross, Katherine.
  637.   
  638.     R4: Extracts data from a fixed field
  639.         Parameters
  640.         0       "R4"
  641.         1       (decimal) field tag
  642.         2       (decimal/hex/octal) beginning character offset
  643.         3       (decimal/hex/octal) ending character offset
  644.                 (leading 0x = hex; leading 0 = octal)
  645.                  must be >= beginning offset
  646.   
  647.         Example:   OCLC@NO:@  |  |   R4!001!0!10!   |     ~
  648.           will display "001 ocm20885381" as:
  649.             OCLC NO: ocm20885381
  650.     
  651.     R5: Substitute data in a field
  652.         Parameters
  653.         0       "R5"
  654.         1       (decimal) field tag
  655.         2       data for first occurrence of MARC field
  656.         3       data for second occurrence of MARC field
  657.         .       .
  658.         :       :
  659.         n       data for n-1th occurrence of MARC field
  660.   
  661.         Example:   HOLDINGS:@  |   |  R5!948!Check@at@ILL.@!  |  ~
  662.           will display "948 $hLIBRARIES: STATE: LA  LIBRARY: LMJ" as:
  663.             HOLDINGS: Check at ILL.
  664.     
  665.     R6: Extract and format date based on contents of leader byte 7 and
  666.         MARC field 008.
  667.         Parameters
  668.         0       "R6"
  669.         1       (decimal) field tag (use 008)
  670.  
  671.         Example:   YEAR:@     |  |  R7!008!   |   ~
  672.           will cause dates to be formatted as:
  673.              /07       008/6-14        display
  674.                s       d19041905       YEAR: 1904-1905
  675.                s       d181u18uu       YEAR: 181u-18uu
  676.                m       i17651770       YEAR: 1765-1770
  677.                m       r19911926       YEAR: 1991, 1926
  678.                m       c19701958       YEAR: 1970, 1958
  679.                m       d198606         YEAR: June, 1986
  680.                m       s1903           YEAR: 1903
  681.                s       c19869999       YEAR: 1986
  682.                m       b               YEAR: 
  683.     
  684.     R7: Appends text string at the end of each subfield in a MARC field.
  685.         Parameters
  686.         0       "R7"
  687.         1       (decimal) field tag
  688.         2       string to append to each subfield except the last 
  689.                 in the MARC field
  690.         3       string to append to the last subfield in the MARC field
  691.   
  692.         Example:  SUBJECT:@ |  |  R7!650!@--@!.!  |  ~
  693.           will cause  
  694.             "650 $aUnited States $aHistory $yCivil War 1861-1865" 
  695.           to be formatted as:
  696.             SUBJECT: United States -- History -- Civil War 1861-1865.
  697.  
  698. Section 5: Creating a Z39.50 Database
  699. =====================================
  700.   This section gives some pointers for finding a Z39.50 compatible
  701.   server to put your data into, to allow you to search with Willow.
  702.   The development of Z39.50 software is progressing quite rapidly, so
  703.   the information in this section may be out of date by the time you
  704.   read it.
  705.  
  706.   The best way to start looking for current Z39.50 information is to
  707.   point your favorite WWW browser (i.e. Mosaic) at the Z39.50
  708.   Resources page at URL:
  709.       http://ds.internic.net/z3950/z3950.html
  710.  
  711.   As of this writing, there is no public domain z3950 search engine
  712.   that is ready-to-use with Willow. The National Library of Canada
  713.   has made their server code available, but it includes only the
  714.   protocol engine -- you still have to integrate a search engine.
  715.   There are commercial engines, like OCLC's Newton, but they tend to
  716.   be fairly expensive for light-duty use.
  717.  
  718.   WAIS is an extremely popular database system that speaks Z39.50,
  719.   however Willow speaks Z39.50 version 2 (1992), with some version 3
  720.   (1994, draft) enhancements. WAIS-0.2 and WAIS-0.3 speak z39.50
  721.   (1988), which is not compatible with version 2.  There is a group at
  722.   CNIDR that is working on a WAIS protocol engine (called ZDist) that
  723.   understands Z39.50 (1992), but the software is still under
  724.   development as of this writing. Once ZDist is complete, this will
  725.   probably be the best solution for setting up your own
  726.   Willow-compatible database. For the latest information, see the
  727.   URL: 
  728.       http://cnidr.org/welcome.html
  729.  
  730.   It is theoretically possible to use any search engine with the ZDist
  731.   api, if you are willing to do some programming.  The ZDist
  732.   pre-release code includes patches to integrate WAIS-0.3.  We have
  733.   been experimenting with this package, but there are still some
  734.   problems with it and we don't have it working with Willow yet.  Once
  735.   ZDist has the bugs worked out, the intent is that you could use it
  736.   to serve any existing WAIS database, and query the database with any
  737.   1992-compliant client.
  738.  
  739.   Following is some more (possibly dated) information from the ZDist
  740.   developer. 
  741.  
  742.    -----------------------------------------------------
  743.     Date: Thu, 21 Jul 1994 14:59:08 -0400 (EDT)
  744.     From: Kevin Gamiel <kgamiel@vinca.cnidr.org>
  745.     Subject: Re: Z39.50 server software?
  746.  
  747.     ...
  748.  
  749.     Currently available is a pre-release of the [ZDist] client, server
  750.     and HTTP gateway
  751.        <ftp://ftp.cnidr.org/pub/NIDR.tools/zdist/pre1.tar.Z>.
  752.  
  753.     The protocol stack is interoperable with Willow and seems to
  754.     communicate just fine.  The server application, ZServer, also
  755.     works with Willow with a few no-brainer patches included.
  756.  
  757.     The real work to be done with ZDist is in the stablization of our
  758.     Search API (a generic search engine interface) and linking in a
  759.     few example search engines.  This is purely a timing problem with
  760.     our limited programming resources (me).
  761.  
  762.     If you're willing to put in the effort, the pre-release mentioned
  763.     provides everything one needs to put a Z39.50-1992 front-end onto
  764.     existing WAIS databases.  The process for doing so is documented
  765.     in the release and involves the following (over simplified)
  766.     procedure:
  767.             1)  Install, build and test ZDist
  768.             2)  Install freeWAIS-0.3 (for the search engine)
  769.             3)  Integrate patches allowing ZServer to use the
  770.                 freeWAIS-0.3 search engine
  771.             4)  Recompile ZServer to link with the freeWAIS-0.3 search
  772.                 engine 
  773.             5)  Edit zserver.ini file to "point" to any local WAIS
  774.                 database. 
  775.  
  776.     Thats "all" there is to having a fully functional Z39.50-1992
  777.     server with existing WAIS databases behind it!
  778.  
  779.     I welcome you all to join the ZIP-L mailing list, where ZDist is
  780.     discussed:
  781.  
  782.             This distribution will be discussed via electronic mail on
  783.             the ZIP list.  To join, send mail to
  784.                     listserv@cnidr.org
  785.             In the body of the message type
  786.                     subscribe zip-l Firstname Lastname
  787.             where Firstname is your first name and Lastname is your
  788.             last name as you would like it to appear on the
  789.             subscription list.
  790.  
  791.     If we can generate some traffic on that list from interested
  792.     parties, i.e. people actually trying to install and use ZDist, I
  793.     would be more than happy to assist in the effort.
  794.  
  795.     Thank you for your continued patience and your cooperation in the
  796.     future.
  797.  
  798.     Kevin
  799.     ----------------------------------------------------------------------
  800.     Kevin Gamiel - KEVIN.GAMIEL@CNIDR.ORG
  801.     MCNC CNIDR - 919-248-1911 
  802.     Clearinghouse for Networked Information Discovery and Retrieval
  803.  
  804.     Proud charter member of 
  805.     Tar Heel Information Services - "Nothing but net!"
  806.     -----------------------------------------------------------------------
  807.  
  808.